package main

import "fmt"

type Vertex struct {
	Lat, Long float64
}

var m map[string]Vertex//MARK 零值为 nil 。nil 映射既没有键，也不能添加键。

func main() {
	
	m = make(map[string]Vertex) //MARK 注意  还是要make才能用
	
	m["Bell Labs"] = Vertex{ //MARK 注意复制
		40.68433, -74.39967,
	}
	fmt.Println(m["Bell Labs"])
	
	
	literalsInit()
	mapFuns()
}

func mapFuns() {
	fmt.Println("=============mapFuns start================")
	
	m := make(map[string]int)
	m["Answer"] = 42

	delete(m, "Answer")//MARK 删除

	v, ok := m["Answer"]//MARK 没有这个 会返回对应零值, 第二个返回值判断存在
	fmt.Println("The value:", v, "Present?", ok)
}

func literalsInit() {
	
	fmt.Println("=============literrals start================")
	//MARK 初始化的时候 直接 字面量赋值
	
	m = map[string]Vertex{

		"Bell Labs": {
			40.68433, -74.39967,
		},
		"Google": Vertex{//MARK 类型推断 这里只能是Vertex 所有可以省略
			37.42202, -122.08408,
		},
	}
	fmt.Println(m)

	n := map[string]int{"1":1,"2":2}
	fmt.Println(n)
}